<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <script>
    // 一. js的数据类型
    // 1. 基本数据类型: number/string/boolean/undefined/null
    // 2. 引用数据类型: object
    // 注意：用typeof进行类型检测的时候 null是object 函数是function

    // 二. 引用类型 - object
    // 1. 函数是引用类型

    // 2. 数组对象
    // var name1 = "zhangsan";
    // var name2 = "lisi";
    // var name3 = "wangwu";
    // var arr = ["zhangsan", "lisi", "wangwu"];
    // console.log(arr);

    // 3. 对象(自定义对象)
    // var perple = {
    //   name: "zhangsan",
    //   age: 20,
    //   sayHello: function() {
    //     console.log("hello");
    //   }
    // }





    // 三. 数组对象
    // 概念：数组对象的就是一组类型相同或者不同的数据
    // 数组创建
    // 1. 通过js提供一个叫Array的构造函数来进行创建
    // var colorArr = new Array("red", "green", "blue");
    // console.log(colorArr);

    // 2. 通过字面量的方式来创建数组
    // 固定值的方式
    // var fruitArr = ["apple", "banana", "orange"];
    // console.log(fruitArr);

    // 3. 两种创建方式之间的区别
    // 只有当创建的数组只有一个值，并且这个值是数字的时候
    // 用构造函数创建的时候，这个数字表示长度，里面的每一项初始情况都是空(empty * 10)
    // 用字面量创建的时候里面就是只有一个数字
    // var arr = new Array(10);
    // console.log(arr);
    // var arr2 = [10];
    // console.log(arr2);

    // 4. 对象里面的值可以是不同的类型
    // console.log([4, "hello", true, [1,2,3], function() {}]);





    // 数组的操作
    // 1. length属性,表示的是数组的长度
    // var fruitArr = ["apple", "banana", "orange", "pair"];
    // console.log(fruitArr.length); // 4

    // 还可以通过length属性来修改数组的长度
    // fruitArr.length = 2;
    // console.log(fruitArr); // 删除后面的几项

    // fruitArr.length = 6;
    // console.log(fruitArr); // 当修改的长度大于原有长度的时候，会在后面添加空属性



    // 2. 索引下标
    // 数组可以通过索引(index)来读取或者修改数组里面特定的某一项，索引是固定从0开始的整数
    // var fruitArr = ["apple", "banana", "orange", "pair"];
    // console.log(fruitArr[0]); // "apple"
    // console.log(fruitArr[1]); // "banana"
    // console.log(fruitArr[2]); // "orange"
    // console.log(fruitArr[3]); // "pair"
    // console.log(fruitArr[4]); // 当索引超出了数组的长度，显示undefined

    // 通过索引去修改数组项
    // fruitArr[1] = "watermelon";
    // console.log(fruitArr);
    // fruitArr[100] = "watermelon";
    // console.log(fruitArr);



    // 3. 遍历(通过循环的方式来获取数组里面的每一项)
    // var fruitArr = ["apple", "banana", "orange", "pair", "watermelon", "kiwi"];
    // console.log(fruitArr[0]);
    // console.log(fruitArr[1]);
    // console.log(fruitArr[2]);
    // console.log(fruitArr[3]);
    // for (var i = 0; i < fruitArr.length; i++) {
    //   console.log(fruitArr[i]);
    // }



    // 4. 如何判断一个变量是否是数组
    // var fruitArr = ["apple", "banana", "orange", "pair", "watermelon", "kiwi"];
    // var nl = null;
    // console.log(typeof fruitArr); // object
    // console.log(typeof null); // object

    // Array.isArray(变量) 
    // 会返回一个布尔值，true表示这是一个数组，false表示不是数组
    // console.log(Array.isArray(fruitArr));
    // console.log(Array.isArray(null));


  </script>
</body>
</html>